clc;
syms x;
f(x)=abs(x)/x;
xx=[-pi:pi/200:pi];
xx=xx(xx~=0);%去掉等于0的元素
xx=sort([xx,-eps,eps]);%添加两个非常接近于零的值 -eps 和 eps（其中 eps 是 MATLAB 中的机器精度，表示非常小的数）。这样可以更好地观察函数在零点附近的行为。然后对数组进行排序
yy=f(xx);
figure();
plot(xx,yy),

for n=1:20,
    f1=fseries(f,x,n);
    y1=subs(f1,x,xx);%将符号表达式 f1 中的符号变量 x 替换为数组 xx 中的值，计算傅里叶级数在这些点处的数值，并存储在数组 y1 中
    line(xx,y1);%在当前图像上绘制傅里叶级数的近似曲线。横轴是 x，纵轴是傅里叶级数的值 y1
end


% 整个代码的目的是可视化符号函数 f(x)=∣x∣/x 的图像，
% 并通过傅里叶级数展开来近似它，
% 同时观察随着项数增加傅里叶级数如何逼近原函数。



% f是原函数，f1是傅里叶级数，他们都采用离散的形式绘制，来表述真实连续曲线之间的差值。
% yy是原函数输入定义域后得到的值域数组
% y1是傅里叶级数展开后，输入定义域数组后得到的值域数组
f1=fseries(f,x,14)
% ---------------------------------------------------------------
figure()
xx=[-2*pi:pi/200:2*pi];
xx=xx(xx~=0);
xx=sort([xx,-eps,eps]);
% ---------------------------------------------------------------
yy=subs(f,x,xx);%x换成xx
plot(xx,yy),

y1=subs(f1,x,xx);
line(xx,y1)%绘制傅里叶级数的近似图像